The present invention relates generally to the field of information technology, and, more particularly, to systems and techniques for testing software.
Software quality assurance (QA) is an important part of the software development process. Software QA helps to ensure that the software product is relatively free of issues, bugs, or other defects prior to the product being deployed in a customer environment. Unfortunately, issues do arise because it is very difficult to anticipate all the different conditions in which the software will be used.
Thus, every product lifecycle includes a phase of sustaining where the release products are being supported throughout their lifetime. No matter how good the product is designed, it can still run into supportability issues. There can be service requests coming out from the field which need to be supported by support as well as by an escalation engineering team. Typically, if the support team is unable to resolve the issue, the issue will be escalated to the escalation engineering team to examine. Often, the escalation engineering team spends a large amount of time obtaining the required information and setup/environment details, and reproducing the issue.
These issues can range from relatively benign usability issues to major system failures. For example, software bugs have lead to outages and disruptions of stock exchanges, e-commerce sites, corporate email, enterprise backup and recovery systems, order fulfillment systems, supply change management systems, and so forth.
When such issues are discovered, it is important that the problem is quickly isolated and addressed. However, the environments in which such applications, especially enterprise applications, run have become extremely complex. As a result, it often requires a tremendous effort and a large amount of time to create a realistic testing environment in which an attempt can be made to reproduce the issue. Previous approaches were also prone to error and subjective interpretation regarding the customer's configuration environment. Subsequent issues regarding the same application required repeating a number of manual steps to recreate the testing environment.
Thus, there is a need to provide systems and techniques for facilitating the creation of testing environments to quickly address software failure issues.